调用委托

CallCSDelegate.lua.txt

    local callDel = CS.UnityEngine.Object.FindObjectOfType(typeof(CS.shenjun.CallDelegate))

    -- 对委托进行初始化赋值
    callDel.del = callDel.del2

    -- 对委托添加成员方法 错误
    -- callDel.del = callDel.Test

    -- 在使用前定义
    function Test()
        print("Lua Func")
    end

    -- 右操作数可以是同类型的C# delegate/静态方法或者是lua函数。
    callDel.del = callDel.del + Test

    -- 删除一个委托
    --callDel.del = callDel.del - callDel.del2

    -- 判断委托是否为空
    if nil ~= callDel.del then
        -- 调用委托
        callDel:del()
    end

    --把委托变为空
    callDel.del = nil

CallCSDelegate.cs

    /*
     *  created by shenjun
     */

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using XLua;

    namespace shenjun
    {
        public class CallDelegate : MonoBehaviour {

            public System.Action del = null;

            public System.Action del2 = null;

            LuaEnv luaEnv = new LuaEnv();
            void Start () {
                del2 = Test;
                luaEnv.DoString("require 'CallCSDelegate'");
            }

            void Update () {

            }

            private void OnDestroy()
            {
                del = null;
                del2 = null;
                luaEnv.Dispose();
            }

            public void Test()
            {
                Debug.Log("CS Func");
            }
        }
    }

🔚

results matching ""

    No results matching ""